//1、编写一个整数存储在内存中的二进制中1的个数:

//无法计算-1:
//#include<stdio.h>
//int main(){
//    int a=-1,count=0;
//    while (a){
//    if(a%2==1)
//        count++;
//
//    a=a/2;}
//    printf("%d",count);
//    return 0;
//}

//注意:只要把int a变为unsigned int就可以计算-1了:
//#include<stdio.h>
//int main(){
//    int count=0;
//    unsigned int a=0;
//    scanf("%d",&a);
//    while (a){
//        if(a%2==1)
//            count++;
//
//        a=a/2;}
//    printf("%d",count);
//    return 0;
//}



//#include<stdio.h>
//int main(){
//    int i=0,a=3,b=1,count=0;
//    for(i=0;i<32;i++){
//        if(a&b){
//            count++;
//            a>>=1;
//        }
//    }
//    printf("%d",count);
//    return 0;
//}


//最优解:
//#include<stdio.h>
//int main(){
//    int a=-1,count=0;
//    while (a){
//
//        count++;
//        a=a&(a-1);
//    }
//    printf("%d",count);
//    return 0;
//}

//两个数,求二进制位中不同位的个数:
//#include<stdio.h>
//int main(){
//    int count=0,a=0,b=0,temp=0;
//    scanf("%d,%d",&a,&b);
//    temp=a^b;
//    while(temp){
//        count++;
//        temp=temp&(temp-1);
//    }
//    printf("%d",count);
//    return 0;
//}


//2、分别打印出二进制序列中的奇数位和偶数位,按二进制顺序打印:


//#include<stdio.h>
//int main(){
//    int m=0;
//    scanf("%d",&m);
//    printf("奇数:\n");
//    for(int i=30;i>=0;i-=2){
//        printf("%d ",(m>>i)&1);
//    }
//    printf("\n");
//    printf("偶数:\n");
//    for(int i=31;i>0;i-=2){
//        printf("%d ",(m>>i)&1);
//    }
//    return 0;
//}

